 # 使用 golang:alpine 作为基础镜像，并且指定一个别名为 builder，这个阶段主要用于构建应用。
FROM golang:alpine AS builder

# 设置工作目录为：
WORKDIR /app

# 为我们的镜像设置必要的环境变量
ENV Go111MODULE=on \
    GOPROXY=https://goproxy.cn,direct

# -ldflags="-s -w" 用于减少可执行文件的大小，-o 用于指定可执行文件的生成地址（包括名字）
RUN go build -ldflags="-s -w" -o bin/guiding main.go

# 将当前目录下的文件复制到容器中
COPY . .
# 从 alpine 开始一个新的阶段，用于构建最小化的镜像
FROM alpine

# 设置工作目录为 /app
WORKDIR /app

# 从之前的 builder 阶段复制可执行文件 chat 到当前阶段的 /app 目录
COPY --from=builder /app/bin/guiding .
# 从 builder 阶段复制配置文件到当前阶段的 /app/config 目录
COPY --from=builder /app/config/app ./config/app

RUN chmod +x wait-for.sh
RUN chmod +x start.sh

# 声明容器将会监听的端口号
EXPOSE 8000

